package cn.zqy.demo2.day05.Exception;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。
 *         Exception:编译期异常,进行编译(写代码)java程序出现的问题
 *             RuntimeException:运行期异常,java程序运行过程中出现的问题
 *             异常就相当于程序得了一个小毛病(感冒,发烧),把异常处理掉,程序可以继续执行(吃点药,继续革命工作)
 *         Error:错误
 *             错误就相当于程序得了一个无法治愈的毛病(非典,艾滋).必须修改源代码,程序才能继续执行
 */
public class Demo01Exception {
    public static void main(String[] args) /*throws ParseException*/ {
        //Exception:编译期异常,进行编译(写代码)java程序出现的问题
        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");  //用来格式化日期


        /*
        * parse方法用于将字符串类型的日期/时间解析为Date类型。
        * 语法:   public Date parse(参数)
        * 要加上这句 throws ParseException或者：try{}catch(){}。
        * 参数：字符串类型的日期/时间。
        * 返回值：返回对字符串类型的日期/时间解析后生成的Date对象。
        * 异常：执行该方法需要处理ParseException异常。
        * */
        Date parse = null;
        /*try {
            parse = sim.parse("1990-1123");
        } catch (ParseException e) {
            e.printStackTrace();
        }*/

//        System.out.println(parse);

        //RuntimeException:运行期异常,java程序运行过程中出现的问题
        int[] arr = new int[]{1,2,3};
        try {
            //可能会出现异常的代码
            System.out.println(arr[3]);  // java.lang.ArrayIndexOutOfBoundsException: 3
        } catch (Exception e) {
            //异常的处理逻辑
            System.out.println(e);  // java.lang.ArrayIndexOutOfBoundsException: 3
        }


       /*
            Error:错误
            OutOfMemoryError: Java heap space
            内存溢出的错误,创建的数组太大了,超出了给JVM分配的内存
         */
       //int[] a = new int[1024*1024*1021];
        //必须修改代码,创建的数组小一点
        int[] b = new int[1024*1024];

    }
}
